package org.example.struct.array;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

/**
 * @author liyishan
 * @date 2023/8/24 10:43
 * @apiNote
 */

public class M01IsUnique {
    public static void main(String[] args) {
        boolean flag = test("abc");
        System.out.println(flag);
    }

    public static boolean test(String astr) {
        Map<Character,Integer> map = new HashMap<>();
        for(int i = 0; i < astr.length(); i++){
            if(!map.containsKey(astr.charAt(i))){
                map.put(astr.charAt(i),map.getOrDefault(astr.charAt(i),0)+1);
            }else{
                return false;
            }
        }
        return true;
    }

    public static  boolean test1(String astr) {
        int[] arr = new int[128];
        for(int i = 0; i < astr.length(); i++){
            if(arr[astr.charAt(i)] != 0){
                return false;
            }
            arr[astr.charAt(i)] ++;
        }
        return true;
    }

        public static  boolean test2(String astr) {
        int len = astr.length();
        if(len >26){
            return false;
        }
        int num = 0;
        for(int i = 0; i < len; i++){
            char c = astr.charAt(i);
            int index = c - 'a';
            if((num &(1 << index)) !=0){
                return false;
            }else{
                num |= (1 << index);
            }
        }
        return true;
    }

    public static  boolean test3(String astr) {
        Set<Character> set =new HashSet<>();
        for(int i = 0 ; i <astr.length();i++){
            if(!set.add(astr.charAt(i))){
                return false;
            }
        }
        return true;
    }

}
